package br.unirio.brasileirao.dao;

import br.unirio.brasileirao.dao.interfaces.JogoDao;
import br.unirio.brasileirao.dao.interfaces.PalpiteDao;
import br.unirio.brasileirao.dao.interfaces.TimeDao;
import br.unirio.brasileirao.dao.interfaces.UsuarioDao;
import br.unirio.brasileirao.dao.mysql.JogoDaoMysql;
import br.unirio.brasileirao.dao.mysql.PalpiteDaoMysql;
import br.unirio.brasileirao.dao.mysql.SupportDaoMysql;
import br.unirio.brasileirao.dao.mysql.TimeDaoMysql;
import br.unirio.brasileirao.dao.mysql.UsuarioDaoMysql;

/**
 * Classe que concentra o acesso aos DAOs do sistema
 */
public class DAOFactory
{
	private static JogoDao jogoDao;
	private static PalpiteDao palpiteDao;
	private static TimeDao timeDao;
	private static UsuarioDao usuarioDao;

	public static JogoDao getJogoDao() {
		if (jogoDao == null)
			jogoDao = new JogoDaoMysql(SupportDaoMysql.getConnection());

		return jogoDao;
	}

	public static void setJogoDao(JogoDao jogoDao) {
		DAOFactory.jogoDao = jogoDao;
	}

	public static PalpiteDao getPalpiteDao() {
		if (palpiteDao == null)
			palpiteDao = new PalpiteDaoMysql(SupportDaoMysql.getConnection());

		return palpiteDao;
	}

	public static void setPalpiteDao(PalpiteDao palpiteDao) {
		DAOFactory.palpiteDao = palpiteDao;
	}

	public static TimeDao getTimeDao() {
		if (timeDao == null)
			timeDao = new TimeDaoMysql(SupportDaoMysql.getConnection());

		return timeDao;
	}

	public static void setTimeDao(TimeDao timeDao) {
		DAOFactory.timeDao = timeDao;
	}

	public static UsuarioDao getUsuarioDao() {
		if (usuarioDao == null)
			usuarioDao = new UsuarioDaoMysql(SupportDaoMysql.getConnection());

		return usuarioDao;
	}

	public static void setUsuarioDao(UsuarioDao usuarioDao) {
		DAOFactory.usuarioDao = usuarioDao;
	}
}
